﻿namespace WinnerCMS.Common.Security.CodeCharts
{
    using Security;
    using System;
    using System.Collections;

    internal static class Lower
    {
        public static IEnumerable Arabic()
        {
            return CodeChartHelper.GetRange(0x600, 0x6ff, delegate (int i) {
                if ((((i != 0x604) && (i != 0x605)) && ((i != 0x61c) && (i != 0x61d))) && (i != 0x620))
                {
                    return i == 0x65f;
                }
                return true;
            });
        }

        public static IEnumerable ArabicSupplement()
        {
            return CodeChartHelper.GetRange(0x750, 0x77f);
        }

        public static IEnumerable Armenian()
        {
            return CodeChartHelper.GetRange(0x531, 0x58a, delegate (int i) {
                if (((i != 0x557) && (i != 0x558)) && (i != 0x560))
                {
                    return i == 0x588;
                }
                return true;
            });
        }

        public static IEnumerable BasicLatin()
        {
            return CodeChartHelper.GetRange(0x20, 0x7e);
        }

        public static IEnumerable Bengali()
        {
            return CodeChartHelper.GetRange(0x981, 0x9fb, delegate (int i) {
                if ((((((((i != 0x984) && (i != 0x98d)) && ((i != 0x98e) && (i != 0x991))) && (((i != 0x992) && (i != 0x9a9)) && ((i != 0x9b1) && (i != 0x9b3)))) && ((((i != 0x9b4) && (i != 0x9b5)) && ((i != 0x9ba) && (i != 0x9bb))) && (((i != 0x9c5) && (i != 0x9c6)) && ((i != 0x9c9) && (i != 0x9ca))))) && ((i < 0x9cf) || (i > 0x9d6))) && ((i < 0x9d8) || (i > 0x9db))) && ((i != 0x9de) && (i != 0x9e4)))
                {
                    return i == 0x9e5;
                }
                return true;
            });
        }

        public static IEnumerable CombiningDiacriticalMarks()
        {
            return CodeChartHelper.GetRange(0x300, 0x36f);
        }

        public static IEnumerable Cyrillic()
        {
            return CodeChartHelper.GetRange(0x400, 0x4ff);
        }

        public static IEnumerable CyrillicSupplement()
        {
            return CodeChartHelper.GetRange(0x500, 0x525);
        }

        public static IEnumerable Devanagari()
        {
            return CodeChartHelper.GetRange(0x900, 0x97f, i => ((((i == 0x93a) || (i == 0x93b)) || ((i == 0x94f) || (i == 0x956))) || (i == 0x957)) || ((i >= 0x973) && (i <= 0x978)));
        }

        public static IEnumerable GreekAndCoptic()
        {
            return CodeChartHelper.GetRange(880, 0x3ff, delegate (int i) {
                if ((((i != 0x378) && (i != 0x379)) && ((i < 0x37f) || (i > 0x383))) && ((i != 0x38b) && (i != 0x38d)))
                {
                    return i == 930;
                }
                return true;
            });
        }

        public static IEnumerable Gujarati()
        {
            return CodeChartHelper.GetRange(0xa81, 0xaf1, delegate (int i) {
                if ((((((i != 0xa84) && (i != 0xa8e)) && ((i != 0xa92) && (i != 0xaa9))) && (((i != 0xab1) && (i != 0xab4)) && ((i != 0xaba) && (i != 0xabb)))) && ((((i != 0xac6) && (i != 0xaca)) && ((i != 0xace) && (i != 0xacf))) && ((i < 0xad1) || (i > 0xadf)))) && ((i != 0xae4) && (i != 0xae5)))
                {
                    return i == 0xaf0;
                }
                return true;
            });
        }

        public static IEnumerable Gurmukhi()
        {
            return CodeChartHelper.GetRange(0xa01, 0xa75, delegate (int i) {
                if (((((i != 0xa04) && ((i < 0xa0b) || (i > 0xa0e))) && (((((i != 0xa11) && (i != 0xa12)) && ((i != 0xa29) && (i != 0xa31))) && (((i != 0xa34) && (i != 0xa37)) && ((i != 0xa3a) && (i != 0xa3b)))) && ((i != 0xa3d) && ((i < 0xa43) || (i > 0xa46))))) && ((((i != 0xa49) && (i != 0xa4a)) && ((i < 0xa4e) || (i > 0xa50))) && ((i < 0xa52) || (i > 0xa58)))) && (i != 0xa5d))
                {
                    return (i >= 0xa5f) && (i <= 0xa65);
                }
                return true;
            });
        }

        public static IEnumerable Hebrew()
        {
            return CodeChartHelper.GetRange(0x591, 0x5f4, i => ((i >= 0x5c8) && (i <= 0x5cf)) || ((i >= 0x5eb) && (i <= 0x5ef)));
        }

        public static IEnumerable IpaExtensions()
        {
            return CodeChartHelper.GetRange(0x250, 0x2af);
        }

        public static bool IsFlagSet(LowerCodeCharts flags, LowerCodeCharts flagToCheck)
        {
            return ((flags & flagToCheck) != LowerCodeCharts.None);
        }

        public static IEnumerable Kannada()
        {
            return CodeChartHelper.GetRange(0xc82, 0xcf2, delegate (int i) {
                if (((((((i != 0xc84) && (i != 0xc8d)) && ((i != 0xc91) && (i != 0xca9))) && (((i != 0xcb4) && (i != 0xcba)) && ((i != 0xcbb) && (i != 0xcc5)))) && ((i != 0xcc9) && ((i < 0xcce) || (i > 0xcd4)))) && ((i < 0xcd7) || (i > 0xcdd))) && (((i != 0xcdf) && (i != 0xce4)) && (i != 0xce5)))
                {
                    return i == 0xcf0;
                }
                return true;
            });
        }

        public static IEnumerable Lao()
        {
            return CodeChartHelper.GetRange(0xe81, 0xedd, delegate (int i) {
                if (((((i != 0xe83) && (i != 0xe85)) && ((i != 0xe86) && (i != 0xe89))) && (((i != 0xe8b) && (i != 0xe8c)) && ((i < 0xe8e) || (i > 0xe93)))) && (((((i != 0xe98) && (i != 0xea0)) && ((i != 0xea4) && (i != 0xea6))) && (((i != 0xea8) && (i != 0xea9)) && ((i != 0xeac) && (i != 0xeba)))) && ((((i != 0xebe) && (i != 0xebf)) && ((i != 0xec5) && (i != 0xec7))) && (((i != 0xece) && (i != 0xecf)) && (i != 0xeda)))))
                {
                    return i == 0xedb;
                }
                return true;
            });
        }

        public static IEnumerable Latin1Supplement()
        {
            return CodeChartHelper.GetRange(0xa1, 0xff, i => i == 0xad);
        }

        public static IEnumerable LatinExtendedA()
        {
            return CodeChartHelper.GetRange(0x100, 0x17f);
        }

        public static IEnumerable LatinExtendedB()
        {
            return CodeChartHelper.GetRange(0x180, 0x24f);
        }

        public static IEnumerable Malayalam()
        {
            return CodeChartHelper.GetRange(0xd02, 0xd7f, delegate (int i) {
                if (((((((i != 0xd04) && (i != 0xd0d)) && ((i != 0xd11) && (i != 0xd29))) && (((i != 0xd3a) && (i != 0xd3b)) && ((i != 0xd3c) && (i != 0xd45)))) && ((i != 0xd49) && ((i < 0xd4e) || (i > 0xd56)))) && ((i < 0xd58) || (i > 0xd5f))) && (((i != 0xd64) && (i != 0xd65)) && ((i != 0xd76) && (i != 0xd77))))
                {
                    return i == 0xd78;
                }
                return true;
            });
        }

        public static IEnumerable Nko()
        {
            return CodeChartHelper.GetRange(0x7c0, 0x7fa);
        }

        public static IEnumerable Oriya()
        {
            return CodeChartHelper.GetRange(0xb01, 0xb71, delegate (int i) {
                if (((((((i != 0xb04) && (i != 0xb0d)) && ((i != 0xb0e) && (i != 0xb11))) && (((i != 0xb12) && (i != 0xb29)) && ((i != 0xb31) && (i != 0xb34)))) && ((((i != 0xb3a) && (i != 0xb3b)) && ((i != 0xb45) && (i != 0xb46))) && (((i != 0xb49) && (i != 0xb4a)) && ((i < 0xb4e) || (i > 0xb55))))) && ((i < 0xb58) || (i > 0xb5b))) && ((i != 0xb5e) && (i != 0xb64)))
                {
                    return i == 0xb65;
                }
                return true;
            });
        }

        public static IEnumerable Samaritan()
        {
            return CodeChartHelper.GetRange(0x800, 0x83e, delegate (int i) {
                if (i != 0x82e)
                {
                    return i == 0x82f;
                }
                return true;
            });
        }

        public static IEnumerable Sinhala()
        {
            return CodeChartHelper.GetRange(0xd82, 0xdf4, delegate (int i) {
                if ((((((i != 0xd84) && (i != 0xd97)) && ((i != 0xd98) && (i != 0xd99))) && (((i != 0xdb2) && (i != 0xdbc)) && ((i != 0xdbe) && (i != 0xdbf)))) && ((((i != 0xdc7) && (i != 0xdc8)) && (i != 0xdc9)) && ((i < 0xdcb) || (i > 0xdce)))) && ((i != 0xdd5) && (i != 0xdd7)))
                {
                    return (i >= 0xde0) && (i <= 0xdf1);
                }
                return true;
            });
        }

        public static IEnumerable SpacingModifierLetters()
        {
            return CodeChartHelper.GetRange(0x2b0, 0x2ff);
        }

        public static IEnumerable Syriac()
        {
            return CodeChartHelper.GetRange(0x700, 0x74f, delegate (int i) {
                if ((i != 0x70e) && (i != 0x74b))
                {
                    return i == 0x74c;
                }
                return true;
            });
        }

        public static IEnumerable Tamil()
        {
            return CodeChartHelper.GetRange(0xb82, 0xbfa, delegate (int i) {
                if (((((((i != 0xb84) && (i != 0xb8b)) && ((i != 0xb8c) && (i != 0xb8d))) && (((i != 0xb91) && (i != 0xb96)) && ((i != 0xb97) && (i != 0xb98)))) && ((((i != 0xb9b) && (i != 0xb9d)) && ((i != 0xba0) && (i != 0xba1))) && (((i != 0xba2) && (i != 0xba5)) && ((i != 0xba6) && (i != 0xba7))))) && ((((i != 0xbab) && (i != 0xbac)) && (i != 0xbad)) && ((i < 0xbba) || (i > 0xbbd)))) && ((((i != 0xbc3) && (i != 0xbc4)) && ((i != 0xbc5) && (i != 0xbc9))) && (((i != 0xbce) && (i != 0xbcf)) && ((i < 0xbd1) || (i > 0xbd6)))))
                {
                    return (i >= 0xbd8) && (i <= 0xbe5);
                }
                return true;
            });
        }

        public static IEnumerable Telugu()
        {
            return CodeChartHelper.GetRange(0xc01, 0xc7f, delegate (int i) {
                if (((((((i != 0xc04) && (i != 0xc0d)) && ((i != 0xc11) && (i != 0xc29))) && (((i != 0xc34) && (i != 0xc3a)) && ((i != 0xc3b) && (i != 0xc3c)))) && (((i != 0xc45) && (i != 0xc49)) && ((i < 0xc4e) || (i > 0xc54)))) && ((i != 0xc57) && ((i < 0xc5a) || (i > 0xc5f)))) && ((i != 0xc64) && (i != 0xc65)))
                {
                    return (i >= 0xc70) && (i <= 0xc77);
                }
                return true;
            });
        }

        public static IEnumerable Thaana()
        {
            return CodeChartHelper.GetRange(0x780, 0x7b1);
        }

        public static IEnumerable Thai()
        {
            return CodeChartHelper.GetRange(0xe01, 0xe5b, i => (i >= 0xe3b) && (i <= 0xe3e));
        }

        public static IEnumerable Tibetan()
        {
            return CodeChartHelper.GetRange(0xf00, 0xfd8, delegate (int i) {
                if ((((i != 0xf48) && ((i < 0xf6d) || (i > 0xf70))) && ((i < 0xf8c) || (i > 0xf8f))) && ((i != 0xf98) && (i != 0xfbd)))
                {
                    return i == 0xfcd;
                }
                return true;
            });
        }
    }
}

